export default {
  // 命名空间作用：能够让辅助函数，指定模块，进行属性映射
  namespaced: true,
  state: {
    name: "购物车:cart",
    cartData: [],
  },
  actions: {
    ADD_TO_CART(context, payload) {
      // console.log(context);
      // console.log(payload);
      context.commit("SET_CART", payload);
      //需要提交另一个mutation，
      context.commit("product/DECREASE_INVENTORY", payload, { root: true });
    },

    //定义一个移出购物车
    REMOVE_CART(context, payload) {
      // 自己数量-1
      //product模块中对应的数量+1
      console.log(payload);
      context.commit("DECREASE_CART", payload);

      //触发product中的mutataions
      context.commit("product/INCREASE_INVENTORY", payload, { root: true });
    },
  },
  mutations: {
    // LOG(state) {},
    // 加入到购物车方法
    SET_CART(state, payload) {
      // 1.点击加入购物车按钮，获取当前点击的这条数据
      // 2.加入到cart模块的cartData数组中
      // 3.判断如果cartData数组中存在这条数据，让数量+1
      // 4.如果不存在，就知道加入到数组中去

      //1.先检查cartData有没有传入这条数据
      let target = state.cartData.find((item) => item.id === payload.id);
      if (target) {
        // 判断如果有就让加进来的数量 + 1;
        target.count++;
      } else {
        //cartData没有这条数据,
        let obj = {
          id: payload.id,
          title: payload.title,
          price: payload.price,
          count: 1,
        };
        // 添加到购物车的数组
        state.cartData.push(obj);
      }
    },

    //让数量-1
    DECREASE_CART(state, payload) {
      let target = state.cartData.find((item) => item.id === payload.id);
      if (target) {
        target.count--;
      }
      if (target.count === 0) {
        state.cartData = state.cartData.filter((item) => item.id !== target.id);
      }
    },
  },
  getters: {
    //计算商品总价
    total(state) {
      return state.cartData
        .reduce((total, item) => {
          return (total += item.price * item.count);
        }, 0)
        .toFixed(2);
    },
  },
};
